package com.demo.common.createJfinalFileV2.createFile;

import com.demo.common.createJfinalFileV2.Config;
import com.jfinal.kit.StrKit;

import java.io.*;

/**
 * @author 马洁
 * @date 2019/11/15 - 20:02
 */
public class CreateFileMain {

    public static boolean create(String[] list) throws IOException {
        for (String item: list) {
            // 对于每个需要创建的目录，先生成包
            File packageFile = new File(Config.outPath + "/" + item);

            if (!packageFile.mkdir()) {
                return false;
            } else {
                // 生成所需文件
                String prefix = StrKit.firstCharToUpperCase(item);

                File[] finalFiles = makeFiles(packageFile.getPath(), prefix);
                if (finalFiles == null) {
                    return false;
                }
                // 进行文件写入
                if (!MyFileWriter.write(prefix, finalFiles)) {
                    return false;
                }
            }
        }

        return true;
    }

    /**
     * 根据包路径以及文件前缀结合文件后缀生成所需要的Controller，Service等文件
     * @param packagePath 包路径
     * @param prefix 前缀
     * @return 文件数组，操作失败返回null
     * @throws IOException io异常
     */
    public static File[] makeFiles(String packagePath, String prefix) throws IOException {
        // 保存最终生成的文件
        File[] finalFiles = new File[Config.fileSuffix.length];

        // 生成所需文件，Controller，service等
        for (int i = 0; i < Config.fileSuffix.length; i++) {
            finalFiles[i] = new File(
                    packagePath + "/" + prefix + Config.fileSuffix[i] + Config.FILE_TYPE);

            if (!finalFiles[i].createNewFile()) {
                return null;
            }
        }

        return finalFiles;
    }
}
